package com.tedu.api.thread;

import org.junit.Test;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**作业   （周二之前交）
 * 单元测试：testLambdaHomeWork1
 * 1.线程两种创建方式：使用Lambda表达式完成
 * 2.找集合中：ListAPI:单元测试名：testSort:使用Lambda表达式完成
 * 3.找IO流----File类----“FilterAPI”(先转换成匿名内部类再转成Lambda):使用Lambda表达式完成
 *                                                            【5行完成】
 * 4.找IO流----File类----“FilterAPI”(先转换成匿名内部类再转成Lambda):使用Lambda表达式完成
 *                                                            【2行完成】
 */

/*1*/
  public class testLambdaHomeWork1 {
    //1.线程两种创建方式：使用Lambda表达式完成
    public static void main(String[] args) {
        Thread t1 = new Thread(() -> {
            for (int i = 0; i < 1000; i++) {
                System.out.println("One闪One闪");
            }
        });
        t1.start();
        Runnable r = () -> {
            for (int i = 0; i < 1000; i++) {
                System.out.println("波灵波灵~");
            }
        };
        Thread t2 = new Thread(r);
        t2.start();
    }

    /*2*/
    @Test
    public void testLambdaHomeWork1() {
        //2.找集合中：ListAPI:单元测试名：testSort:使用Lambda表达式完成
        List<String> list = new ArrayList<>();
        list.add("阿西吧~");
        list.add("搜嘎斯内~");
        list.add("哟西!");
        Collections.sort(list);  //排序：针对数值
        System.out.println("排序后集合：" + list);
        //需求：按照文字长短进行排序  重载sort方法
        //创建比较器接口对象 【匿名内部类】
        //比较器对象内部提供方法：针对集合排序操作【交换规则】
           /* Comparator<String> com=new Comparator<String>() {
                //定义比较器规则：按照汉字长度排序---交换操作compare方法完成
                public int compare(String o1, String o2) {
                    return o1.length()-o2.length();
                }
            };*/
        //比较器：规定文字短在前规则，使用比较器规则
        Collections.sort(list, (o1, o2) -> o1.length() - o2.length());
        System.out.println("按照文字长短进行集合排序：" + list);

    }

    @Test
    /*3*/
    public void testLambdaHomeWork2() {
        //3.找IO流----File类----“FilterAPI”(先转换成匿名内部类再转成Lambda):使用Lambda表达式完成
        //                                                             【5行完成】
        File file = new File(".");
        // 转换成匿名内部类
        File[] subs = file.listFiles(new FileFilter() {
            public boolean accept(File pathname) {
                return pathname.getName().startsWith("s");
            }
        });
        for (File sub : subs) {
            System.out.println(sub.getName());
        }
        //转换成Lambda表达式【5行】
        File[] subs1 = file.listFiles(pathname -> {
            String name = pathname.getName();
            System.out.println("Name:" + name);
            return name.startsWith("s");
        });
        for (File sub : subs1) {
            System.out.println("Filtered:" + sub.getName());
        }
    }


}







